home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload Trio 2
/
Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO
/
dir42
/
jm0394.zip
/
TRAC1.SC
< prev
Wrap
Text File
|
1993-12-29
|
14KB
|
392 lines
;************************************************************************
; The following Library of procedures are:
;
; Copyrighted (c) 1993 Micro-Phyla Systems All Rights Reserved
;
; Author: John B. Moore
; CIS#: 71333,1775
; This code is licensed to the holder to be used for their own personal
; application development. It cannot be used to produce a commercial
; add-in that duplicates the function and purpose of these utilities.
;**************************************************************************
;*******************************************************************************
; TracTuner System Procs
; Date: 9/6/93 Version 1
;*******************************************************************************
; ============================================================
; 09-06-93
; Creates TracTuner windows
; ------------------------------------------------------------
PROC TracTunerCreateWindows_u()
PRIVATE Procname.a,
attrib_bag,
h
Procname.a = "TracTunerCreateWindows_u"
;- we need three windows: Triggers, Procs, Watch
ECHO OFF
;--substitute your window handle dynarray if needed.
IF NOT ISASSIGNED(g_handle_bag) THEN
DYNARRAY g_handle_bag[]
ENDIF
h = SaveWindowHandle_n()
; -- reset video
MENU {≡} {Video} {D: EGA/VGA: 80x43/50}
;- setup basic attribs..
DYNARRAY attrib_bag[]
attrib_bag["CANCLOSE"] = FALSE
attrib_bag["CANMAXIMIZE"] = FALSE
attrib_bag["CANRESIZE"] = FALSE
attrib_bag["CANMOVE"] = FALSE
attrib_bag["FLOATING"] = TRUE
attrib_bag["HASSHADOW"] = FALSE
attrib_bag["HASFRAME"] = FALSE
attrib_bag["MAXIMIZED"] = FALSE
attrib_bag["CANVASHEIGHT"] = 200
;- Triggers window
attrib_bag["TITLE"] = "Triggers"
attrib_bag["ORIGINCOL"] = 0
attrib_bag["ORIGINROW"] = 24
attrib_bag["WIDTH"] = 40
attrib_bag["HEIGHT"] = 12
attrib_bag["STYLE"] = 31 ;white on blue
WINDOW CREATE ATTRIBUTES attrib_bag TO g_handle_bag["TRIGGERS"]
PAINTCANVAS ATTRIBUTE 31 ALL
;- define dynarrays..
DYNARRAY tr_trigger_bag[]
WINDOW SELECT h
WINDOW SELECT h
ECHO NORMAL
ENDPROC
;("TracTunerCreateWindows_u")
; ============================================================
; 09-06-93
;
; ------------------------------------------------------------
PROC TracTunerDestroyWindows_u()
PRIVATE Procname.a,
h
Procname.a = "TracTunerDestroyWindows_u"
IF ISASSIGNED(g_handle_bag["TRIGGERS"]) AND
ISWINDOW(g_handle_bag["TRIGGERS"]) THEN
ECHO OFF
h = SaveWindowHandle_n()
;- close windows
WINDOW SELECT g_handle_bag["TRIGGERS"]
WINDOW SELECT g_handle_bag["TRIGGERS"]
WINDOW CLOSE
;- release vars related to TracTuner
RELEASE VARS g_handle_bag["TRIGGERS"],
tr_trigger_bag,
g_cycle_n
; -- reset video
MENU {≡} {Video} {C: EGA/VGA: 80x25}
WINDOW SELECT h
WINDOW SELECT h
;- upon shifting back to 80x25 a former max window will only
; take up half the screen
WINMAX
ENDIF
ENDPROC
;("TracTunerDestroyWindows_u")
; ============================================================
; 09-06-93
; Main TracTuner proc
; ------------------------------------------------------------
PROC TracTuner_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
PRIVATE Procname.a,
current_h
Procname.a = "TracTuner_u"
IF ISASSIGNED(TracTuner_l) AND TracTuner_l THEN
IF NOT ISASSIGNED(g_cycle_n) THEN
g_cycle_n = 0
ENDIF
ECHO OFF
current_h = SaveWindowHandle_n()
IF cycle_n <> g_cycle_n OR
NOT ISASSIGNED(tr_trigger_bag) THEN
;--define or reset arrays
DYNARRAY tr_trigger_bag[]
ENDIF
TracTunerRefreshWindows_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
SETCANVAS DEFAULT
STYLE
WINDOW SELECT current_h
WINDOW SELECT current_h
;--update cycle
g_cycle_n = cycle_n
ENDIF
ENDPROC
;("TracTuner_u")
; ============================================================
; 09-06-93
; Sets up or removes TracTuner
; ------------------------------------------------------------
PROC TracTunerSetup_n()
PRIVATE Procname.a
Procname.a = "TracTunerSetup_n"
ECHO OFF
IF ISASSIGNED(TracTuner_l) THEN
;--If you have mouse button canvas windows or something
; similar you would move those off screen at this point
; Example:
; WaitMouseButtonPutaway_u(currentpage_n)
TracTunerDestroyWindows_u()
IF ISFILE("watch.sc") THEN
RUN NOREFRESH "DEL watch.sc >>nul"
ENDIF
;--Now you would move any floating windows back on screen
; so they will be located in the proper position.
; Examples:
; WINDOW MOVE g_handle_bag["SPEEDBAR"] TO 23,0
; WaitMouseButtonsPlace_u(currentpage_n)
RELEASE VARS TracTuner_l
ELSE
TracTuner_l = true
;--If you have mouse button canvas windows or something
; similar you would move those off screen at this point
; Example:
; WaitMouseButtonPutaway_u(currentpage_n)
IF ISFILE("watch.sc") THEN
RUN NOREFRESH "DEL watch.sc >>nul"
ENDIF
TracTunerCreateWindows_u()
;--Now you would move any floating windows back on screen
; so they will be located in the proper position.
; Examples:
; WINDOW MOVE g_handle_bag["SPEEDBAR"] TO 23,0
; WaitMouseButtonsPlace_u(currentpage_n)
ENDIF
ECHO NORMAL
RETURN 1
ENDPROC
;("TracTunerSetup_n")
; ============================================================
; 09-07-93
; Writes to windows if info is present
; ------------------------------------------------------------
PROC TracTunerRefreshWindows_u(cycle_n,proc_a,trigger_a,type_a,rval_n)
;type_a: "D" = default "C" = coherced
;proc_a: ""= no proc executed
;rval_n: current retval
PRIVATE Procname.a,
el,
n,
count_n,
basetrigger_a,
abrtrigger_a,
h
Procname.a = "TracTunerRefreshWindows_u"
h = SaveWindowHandle_n()
;--triggers
basetrigger_a = trigger_a
abrtrigger_a = TracTunerAbrTrigger_a(trigger_a)
SETCANVAS g_handle_bag["TRIGGERS"]
STYLE ATTRIBUTE 31
IF g_cycle_n <> cycle_n THEN
CLEAR
PAINTCANVAS ATTRIBUTE 31 ALL
WINDOW SELECT g_handle_bag["TRIGGERS"]
WINDOW SCROLL g_handle_bag["TRIGGERS"] TO 0,0
SETMARGIN OFF
STYLE ATTRIBUTE 14
@0,0 ?? FORMAT("W40,AC","* * TRIGGERS * *")
@2,0
STYLE ATTRIBUTE 31
ENDIF
SETMARGIN 3
count_n = DYNARRAYSIZE(tr_trigger_bag)
IF type_a = "C" THEN
trigger_a = LOWER(trigger_a)
ENDIF
IF NOT ISBLANK(proc_a) THEN
trigger_a = CHR(251)+trigger_a
ELSE
trigger_a = " "+trigger_a
ENDIF
;- place on screen
? STRVAL(count_n+1)+"-"+trigger_a
;--update cycle history
tr_trigger_bag[count_n+1] = trigger_a
WINDOW SELECT h
WINDOW SELECT h
ENDPROC
;("TracTunerRefreshWindows_u")
; ============================================================
; 09-07-93
; returns abreviation of trigger
; ------------------------------------------------------------
PROC TracTunerAbrTrigger_a(eventype_a)
PRIVATE Procname.a
Procname.a = "TracTunerAbrTrigger_a"
SWITCH
CASE eventype_a = "VALCHECK" :RETURN "VC-"
CASE eventype_a = "DEPARTFIELD" :RETURN "DF-"
CASE eventype_a = "DEPARTROW" :RETURN "DR-"
CASE eventype_a = "POSTRECORD" :RETURN "PR-"
CASE eventype_a = "DEPARTABLE" :RETURN "DT-"
CASE eventype_a = "DEPARTPAGE" :RETURN "DP-"
CASE eventype_a = "ARRIVEPAGE" :RETURN "AP-"
CASE eventype_a = "ARRIVEWINDOW":RETURN "AW-"
CASE eventype_a = "ARRIVETABLE" :RETURN "AT-"
CASE eventype_a = "ARRIVEROW" :RETURN "AR-"
CASE eventype_a = "ARRIVEFIELD" :RETURN "AF-"
OTHERWISE : RETURN "NA-"
ENDSWITCH
ENDPROC
;("TracTunerAbrTrigger_a")
;==============================================================
; Last compiled: 9/07/93
;
;--------------------------------------------------------------
PROC TRACMenudef_n()
PRIVATE Procname_a
Procname_a = "TRACMenudef_n"
SHOWPOPUP " TracTuner System " CENTERED
"~S~tart TracTuner":"Start TracTuner System":"start",
"~C~lose TracTuner":"Close TracTuner System":"close",
"~Q~uit TracTuner Menu":"Close TracTuner menu":"quit"
ENDMENU TO choice_a
SWITCH
CASE choice_a = "quit" :
RETURN 1
CASE choice_a = "close" :
TracTunerSetup_n()
CASE choice_a = "start" :
TracTunerSetup_n()
ENDSWITCH
RETURN 1
ENDPROC
;("TRACMenudef_n")
;;;======================================================================
;;; Following are some supporting procedures that are either being used in
;;; this system OR are mention in the articles as examples.
;;;======================================================================
;;
;;; ============================================================
;;; 08-22-93
;;; checks requested depart triggers
;;; ------------------------------------------------------------
;;PROC BeforeTriggers_l(triggers_a) ;format "VC,DF,DR,PR,DR,DT,EXIT"
;; PRIVATE Procname.a,
;; ok_n,
;; eventype_a,
;; eventcode_a
;; Procname.a = "BeforeTriggers_l"
;; WHILE MATCH(triggers_a,"..,..",eventcode_a,triggers_a)
;; SWITCH
;; CASE eventcode_a = "VC": eventype_a = "VALCHECK"
;; CASE eventcode_a = "DF": eventype_a = "DEPARTFIELD"
;; CASE eventcode_a = "DR": eventype_a = "DEPARTROW"
;; CASE eventcode_a = "PR": eventype_a = "POSTRECORD"
;; CASE eventcode_a = "DT": eventype_a = "DEPARTABLE"
;; CASE eventcode_a = "DP": eventype_a = "DEPARTPAGE"
;; ENDSWITCH
;; IF IsAssigned(g_action_bag[TABLE()+eventype_a]) OR
;; IsAssigned(g_action_bag[TABLE()+FIELD()+eventype_a]) THEN
;; ok_n = WaitTriggerDispatcher_n(TABLE(),FIELD(),eventype_a)
;; IF ISASSIGNED(tractuner_l) THEN
;; SWITCH
;; CASE ISASSIGNED(g_action_bag[TABLE()+FIELD()+eventype_a]):
;; proc_a = g_action_bag[TABLE()+FIELD()+eventype_a]
;; CASE ISASSIGNED(g_action_bag[TABLE()+eventype_a]) :
;; proc_a = g_action_bag[TABLE()+eventype_a]
;; OTHERWISE: proc_a = ""
;; ENDSWITCH
;; tractuner_u(cyclenumber_n,proc_a,eventype_a,
;; "C",ok_n)
;; ENDIF
;; IF ok_n = 1 THEN RETURN false ENDIF
;; ENDIF
;; ;--standard default events
;; SWITCH
;; ;---general generic procs---------depart events
;; CASE eventype_a = "POSTRECORD":
;; ok_n = WaitPostRecord_n()
;; tractuner_u(cyclenumber_n,"WaitPostRecord_n",eventype_a,
;; "C",ok_n)
;; IF ok_n = 1 THEN RETURN false ENDIF
;; CASE eventype_a = "IMAGERIGHTS": RETURN false
;; CASE eventype_a = "PASSRIGHTS": RETURN false
;; CASE eventype_a = "VALCHECK":
;; IF NOT ISVALID() THEN
;; BEEP BEEP
;; IMAGERIGHTS CTRLBACKSPACE
;; GeneralMessage_u("The field you are attempting to leave /"+
;; "does not have a valid value for that field./"+
;; "It will be cleared for you and you need to /"+
;; "then insert a valid value. /"+
;; " <Enter> - continues../")
;; tractuner_u(cyclenumber_n,"",eventype_a,
;; "C",1)
;; RETURN false
;; ENDIF
;; RETURN true
;; CASE eventype_a = "DISPLAYONLY": RETURN false
;; CASE eventype_a = "READONLY": RETURN false
;; CASE eventype_a = "REQUIREDVALUE": RETURN false
;; ENDSWITCH
;; IF triggers_a = "EXIT" THEN QUITLOOP ENDIF
;; ENDWHILE
;; ;--if you get here everything passed..
;; RETURN true
;;ENDPROC
;;;("BeforeTriggers_l")
;;
;;
;;; ============================================================
;;; 11-10-92
;;; Saves the current window handle and returns that value
;;; ------------------------------------------------------------
;;PROC SaveWindowHandle_n()
;; PRIVATE Procname_a,
;; ihandle_h,
;; fhandle_h,
;; dhandle_h,
;; chandle_h
;; Procname_a = "SaveWindowHandle_n"
;; WINDOW HANDLE IMAGE IMAGENO() TO ihandle_h
;; WINDOW HANDLE FORM TO fhandle_h
;; WINDOW HANDLE DIALOG TO dhandle_h
;; WINDOW HANDLE CURRENT TO chandle_h
;; ;-- the following logic is that if a dialog handle is there it is
;; ; the one we want returned, next is a form handle, then an image
;; ; handle, and lastly the current window
;; SWITCH
;; CASE dhandle_h <> 0 : RETURN dhandle_h
;; CASE fhandle_h <> 0 : RETURN fhandle_h
;; CASE ihandle_h <> 0 : RETURN ihandle_h
;; CASE chandle_h <> 0 : RETURN chandle_h
;; OTHERWISE:
;; GeneralMessage_u("ERROR, Expecting a window handle assignment/"+
;; "no windows present. Exit module and report/"+
;; "error message.. Anykey continues.. /")
;; RETURN 0
;; ENDSWITCH
;;ENDPROC
;;;("SaveWindowHandle_n")
;;